home *** CD-ROM | disk | FTP | other *** search
Java Source | 2004-09-15 | 3.1 KB | 193 lines |
- import java.awt.*;
- import java.awt.geom.*;
-
- /**
- * A circle that can be manipulated and that draws itself on a canvas.
- *
- * @author Michael Kolling and David J. Barnes
- * @version 1.0 (15 July 2000)
- */
-
- public class Circle
- {
- private int diameter;
- private int xPosition;
- private int yPosition;
- private String color;
- private boolean isVisible;
-
- /**
- * Create a new circle at default position with default color.
- */
- public Circle()
- {
- diameter = 30;
- xPosition = 20;
- yPosition = 60;
- color = "blue";
- isVisible = false;
- }
-
- /**
- * Make this circle visible. If it was already visible, do nothing.
- */
- public void makeVisible()
- {
- isVisible = true;
- draw();
- }
-
- /**
- * Make this circle invisible. If it was already invisible, do nothing.
- */
- public void makeInvisible()
- {
- erase();
- isVisible = false;
- }
-
- /**
- * Move the circle a few pixels to the right.
- */
- public void moveRight()
- {
- moveHorizontal(20);
- }
-
- /**
- * Move the circle a few pixels to the left.
- */
- public void moveLeft()
- {
- moveHorizontal(-20);
- }
-
- /**
- * Move the circle a few pixels up.
- */
- public void moveUp()
- {
- moveVertical(-20);
- }
-
- /**
- * Move the circle a few pixels down.
- */
- public void moveDown()
- {
- moveVertical(20);
- }
-
- /**
- * Move the circle horizontally by 'distance' pixels.
- */
- public void moveHorizontal(int distance)
- {
- erase();
- xPosition += distance;
- draw();
- }
-
- /**
- * Move the circle vertically by 'distance' pixels.
- */
- public void moveVertical(int distance)
- {
- erase();
- yPosition += distance;
- draw();
- }
-
- /**
- * Slowly move the circle horizontally by 'distance' pixels.
- */
- public void slowMoveHorizontal(int distance)
- {
- int delta;
-
- if(distance < 0)
- {
- delta = -1;
- distance = -distance;
- }
- else
- {
- delta = 1;
- }
-
- for(int i = 0; i < distance; i++)
- {
- xPosition += delta;
- draw();
- }
- }
-
- /**
- * Slowly move the circle vertically by 'distance' pixels.
- */
- public void slowMoveVertical(int distance)
- {
- int delta;
-
- if(distance < 0)
- {
- delta = -1;
- distance = -distance;
- }
- else
- {
- delta = 1;
- }
-
- for(int i = 0; i < distance; i++)
- {
- yPosition += delta;
- draw();
- }
- }
-
- /**
- * Change the size to the new size (in pixels). Size must be >= 0.
- */
- public void changeSize(int newDiameter)
- {
- erase();
- diameter = newDiameter;
- draw();
- }
-
- /**
- * Change the color. Valid colors are "red", "yellow", "blue", "green",
- * "magenta" and "black".
- */
- public void changeColor(String newColor)
- {
- color = newColor;
- draw();
- }
-
- /*
- * Draw the circle with current specifications on screen.
- */
- private void draw()
- {
- if(isVisible) {
- Canvas canvas = Canvas.getCanvas();
- canvas.draw(this, color, new Ellipse2D.Double(xPosition, yPosition,
- diameter, diameter));
- canvas.wait(10);
- }
- }
-
- /*
- * Erase the circle on screen.
- */
- private void erase()
- {
- if(isVisible) {
- Canvas canvas = Canvas.getCanvas();
- canvas.erase(this);
- }
- }
- }
-